#region imports

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using MimeCloud.AssetManagement.Business.Interface;

#endregion

namespace MimeCloud.AssetManagement.ProviderServices.Data
{
    public interface IAssetWriterFactory
    {
        void SetDebugLog(TextWriter logger);

        void SaveChanges();

        IAsset GetBlankAsset();
        IAssetContent GetBlankAssetContent();
        IAssetContentType GetBlankAssetContentType();
        ILanguage GetBlankLanguage();
        IRepository GetBlankRepository();
        IMimeType GetBlankMimeType();

        bool SaveAsset(IAsset asset);
        bool SaveLanguage(ILanguage language);
        bool SaveRepository(IRepository repository);
        bool SaveAssetContentType(IAssetContentType contentType);
        bool SaveMimeType(IMimeType mimeType);


        #region old methods

      //  void AddAsset ( IAsset entity );
      //  //void AddAssetContentMetaData ( IAssetContentMetaData entity );
      //  //void AddAssetContentMetaDataList ( IList<IAssetContentMetaData> entities );
      //  //void AddAssetContentRepository ( IAssetContentRepository entity );
      //  //void AddAssetContentRepositoryList ( IList<IAssetContentRepository> entities );
      //  void AddAssetContentType ( IAssetContentType entity );
      //  void AddAssetContentTypeList ( IList<IAssetContentType> entities );
      //  //void AddAssetMetaData ( IAssetMetaData entity );
      //  //void AddAssetMetaDataList ( IList<IAssetMetaData> entities );
      //  void AddAssetRightsUsage ( IAssetRightsUsage entity );
      //  void AddAssetRightsUsageList ( IList<IAssetRightsUsage> entities );
      //  void AddAssociatedContent ( IAssociatedContent entity );
      //  void AddAssociatedContentList ( IList<IAssociatedContent> entities );
      //  void AddAssociatedContentType ( IAssociatedContentType entity );
      //  void AddAssociatedContentTypeList ( List<IAssociatedContentType> entities);
      //  void AddLanguage ( ILanguage entity );
      //  void AddLanguageList ( IList<ILanguage> entities );
      // // void AddMetaData ( IMetaData entity );
      // // void AddMetaDataList ( IList<IMetaData> entities );
      //  void AddMetaKey ( IMetaKey entity );
      //  void AddMetaKeyList ( IList<IMetaKey> entities );
      //  void AddMetaValue ( IMetaValue entity );
      //  void AddMetaValueList ( IList<IMetaValue> entities );
      //  void AddMimeType ( IMimeType entity );
      //  void AddMimeTypeList ( IList<IMimeType> entities );
      //  void AddRelatedAsset ( IRelatedAsset entity );
      //  void AddRelatedAssetList ( IList<IRelatedAsset> entities );
      //  void AddRepository ( IRepository entity );
      //  void AddRepositoryList ( IList<IRepository> entities );
      //  void AddStatus ( IStatus entity );
      //  void AddStatusList ( IList<IStatus> entities );

      //  #endregion

      //  #region delete methods

      //  int DeleteAsset ( IAsset entity );
      //  int DeleteAssetList ( IList<IAsset> entities );
      //  int DeleteAssetContent ( IAssetContent entity );
      //  int DeleteAssetContentList ( IList<IAssetContent> entities );
      //  //int DeleteAssetContentMetaData ( IAssetContentMetaData entity );
      //  //int DeleteAssetContentMetaDataList ( IList<IAssetContentMetaData> entities );
      //  //int DeleteAssetContentRepository ( IAssetContentRepository entity );
      //  //int DeleteAssetContentRepositoryList ( IList<IAssetContentRepository> entities );
      //  int DeleteAssetContentType ( IAssetContentType entity );
      //  int DeleteAssetContentTypeList ( IList<IAssetContentType> entities );
      //  //int DeleteAssetMetaData ( IAssetMetaData entity );
      //  //int DeleteAssetMetaDataList ( IList<IAssetMetaData> entities );
      //  int DeleteAssetRightsUsage ( IAssetRightsUsage entity );
      //  int DeleteAssetRightsUsageList ( IList<IAssetRightsUsage> entities );
      //  int DeleteAssociatedContent ( IAssociatedContent entity );
      //  int DeleteAssociatedContentList ( IList<IAssociatedContent> entities );
      //  int DeleteAssociatedContentType ( IAssociatedContentType entity );
      //  int DeleteAssociatedContentTypeList ( IList<IAssociatedContentType> entities );
      //  int DeleteLanguage ( ILanguage entity );
      //  int DeleteLanguageList ( IList<ILanguage> entities );
      //  //int DeleteMetaData ( IMetaData entity );
      //  //int DeleteMetaDataList ( IList<IMetaData> entities );
      //  int DeleteMetaKey ( IMetaKey entity );
      //  int DeleteMetaKeyList ( IList<IMetaKey> entities );
      //  int DeleteMetaValue ( IMetaValue entity );
      //  int DeleteMetaValueList ( IList<IMetaValue> entities );
      //  int DeleteMimeType ( IMimeType entity );
      //  int DeleteMimeTypeList ( IList<IMimeType> entities );
      //  int DeleteRelatedAsset ( IRelatedAsset entity );
      //  int DeleteRelatedAssetList ( IList<IRelatedAsset> entities );
      //  int DeleteRepository ( IRepository entity );
      //  int DeleteRepositoryList ( IList<IRepository> entities );
      //  int DeleteStatus ( IStatus entity );
      //  int DeleteStatusList ( IList<IStatus> entities );

      //  #endregion

      //  #region update methods

      //  int UpdateAsset ( IAsset entity );
      //  int UpdateAssetList ( IList<IAsset> entities );
      //  int UpdateAssetContent ( IAssetContent entity );
      //  int UpdateAssetContentList ( IList<IAssetContent> entities );
      //  //int UpdateAssetContentMetaData ( IAssetContentMetaData entity );
      //  //int UpdateAssetContentMetaDataList ( IList<IAssetContentMetaData> entities );
      //  //int UpdateAssetContentRepository ( IAssetContentRepository entity );
      //  //int UpdateAssetContentRepositoryList ( IList<IAssetContentRepository> entities );
      //  int UpdateAssetContentType ( IAssetContentType entity );
      //  int UpdateAssetContentTypeList ( IList<IAssetContentType> entities );
      //  //int UpdateAssetMetaData ( IAssetMetaData entity );
      //  //int UpdateAssetMetaDataList ( IList<IAssetMetaData> entities );
      //  int UpdateAssetRightsUsage ( IAssetRightsUsage entity );
      //  int UpdateAssetRightsUsageList ( IList<IAssetRightsUsage> entities );
      //  int UpdateAssociatedContent ( IAssociatedContent entity );
      //  int UpdateAssociatedContentList ( IList<IAssociatedContent> entities );
      //  int UpdateAssociatedContentType ( IAssociatedContentType entity );
      //  int UpdateAssociatedContentTypeList ( IList<IAssociatedContentType> entities );
      //  int UpdateLanguage ( ILanguage entity );
      //  int UpdateLanguageList ( IList<ILanguage> entities );
      ////  int UpdateMetaData ( IMetaData entity );
      ////  int UpdateMetaDataList ( IList<IMetaData> entities );
      //  int UpdateMetaKey ( IMetaKey entity );
      //  int UpdateMetaKeyList ( IList<IMetaKey> entities );
      //  int UpdateMetaValue ( IMetaValue entity );
      //  int UpdateMetaValueList ( IList<IMetaValue> entities );
      //  int UpdateMimeType ( IMimeType entity );
      //  int UpdateMimeTypeList ( IList<IMimeType> entities );
      //  int UpdateRelatedAsset ( IRelatedAsset entity );
      //  int UpdateRelatedAssetList ( IList<IRelatedAsset> entities );
      //  int UpdateRepository ( IRepository entity );
      //  int UpdateRepositoryList ( IList<IRepository> entities );
      //  int UpdateStatus ( IStatus entity );
      //  int UpdateStatusList ( IList<IStatus> entities );

        #endregion
    }
}
